package com.analysis.service;

import com.analysis.entity.Project;
import com.analysis.mapper.ProjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProjectService {

    @Autowired
    private ProjectMapper projectMapper;

    /**
     * 创建项目
     */
    public int create(Project project) {
        // 公司第一次创建的项目，默认设置成选中
        List<Project> projects = projectMapper.selectByCompanyId(project.getCompanyId());
        if (projects == null || projects.isEmpty()) {
            project.setIsSelected(1);
        } else {
            project.setIsSelected(0);
        }
        return projectMapper.insert(project);
    }

    /**
     * 删除项目（逻辑删除）
     */
    public int delete(Long id) {
        return projectMapper.deleteById(id);
    }

    /**
     * 更新项目
     */
    public int update(Project project) {
        return projectMapper.update(project);
    }

    /**
     * 根据ID查询项目
     */
    public Project getById(Long id) {
        return projectMapper.selectById(id);
    }

    /**
     * 根据用户ID查询所有项目
     */
    public List<Project> listByCompany(Long companyId) {
        return projectMapper.selectByCompanyId(companyId);
    }

    /**
     * 分页查询项目（按公司）
     */
    public List<Project> page(Long companyId, int pageNum, int pageSize) {
        int offset = (pageNum - 1) * pageSize;
        return projectMapper.selectByPage(companyId, offset, pageSize);
    }

    /**
     * 统计公司项目数量
     */
    public int count(Long companyId) {
        return projectMapper.countByCompanyId(companyId);
    }

    /**
     * 检查项目名称是否已存在（按公司）
     */
    public boolean existsByCompanyIdAndProjectName(Long companyId, String projectName) {
        Project project = projectMapper.selectByCompanyIdAndProjectName(companyId, projectName);
        return project != null;
    }

    /**
     * 根据公司ID和项目名称查询项目
     */
    public Project getByCompanyIdAndProjectName(Long companyId, String projectName) {
        return projectMapper.selectByCompanyIdAndProjectName(companyId, projectName);
    }

    /**
     * 根据公司ID查询当前选中的项目
     */
    public Project getSelectedByCompanyId(Long companyId) {
        return projectMapper.selectSelectedByCompanyId(companyId);
    }

    /**
     * 设置项目为选中状态（会先取消公司其他项目的选中状态）
     */
    public int selectProject(Long companyId, Long projectId) {
        // 先取消公司所有项目的选中状态
        projectMapper.unselectAllByCompanyId(companyId);
        // 再设置指定项目为选中状态
        return projectMapper.selectProject(projectId);
    }

    /**
     * 取消公司所有项目的选中状态
     */
    public int unselectAllByCompanyId(Long companyId) {
        return projectMapper.unselectAllByCompanyId(companyId);
    }
}
